package org.nuonuo.sdk.model.req;

import org.nuonuo.sdk.model.base.InvoiceGoods;
import org.nuonuo.sdk.valid.Validator;

import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * @Version 1.0
 * @Author az
 * @Date 2024-03-28 09:10:03
 * @ClassName InvoiceReq
 * @Description 电子收据开具
 */
public class OpenInvoiceReq extends Validator {
    /**
     * 购方名称
     */
    @NotNull(message = "购方名称不能为空")
    private String buyerName;
    /**
     * 开票人
     */
    @NotNull(message = "开票人不能为空")
    private String clerk;
    /**
     * 商品明细信息
     */
    @NotNull(message = "商品明细信息不能为空")
    private List<InvoiceGoods> detail;
    /**
     * 订单号（字母或数字，不支持中文）
     */
    @NotNull(message = "订单号（字母或数字，不支持中文）不能为空")
    private String orderNo;
    /**
     * 销方税号
     */
    @NotNull(message = "销方税号不能为空")
    private String salerTaxNum;


    /**
     * 订单时间，格式 yyyy-MM-dd HH:mm:ss 不填时根据提交时间自动生成。
     */
    private String addDate;
    /**
     * 购方银行开户行及账号
     */
    private String buyerAccount;
    /**
     * 购方地址
     */
    private String buyerAddress;
    /**
     * 购方税号（6-20位字母或数字）
     */
    private String buyerTaxNum;
    /**
     * 购方电话
     */
    private String buyerTel;
    /**
     * 复核人
     */
    private String checker;
    /**
     * 开票员id （诺诺系统中的id），只能为字母和数字
     */
    private String clerkId;
    /**
     * 电子收据上企业展示名称，不填默认为企业资质中的名称
     */
    private String corpDisplayName;
    /**
     * 部门门店id （诺诺系统中的id）,只能为字母和数字
     */
    private String deptId;
    /**
     * 发票种类(只能传 p:普通发票(电子)、 c:普通发票(纸质)、 b:专用发票(电子)、 s:专用发票(纸质)、 e:收购发票(电子)、  f:收购发票(纸质)、  r:普通发票(卷式)中的一种)
     */
    private String invoiceLine;
    /**
     * 1:生成开票二维码 0：不生成开票二维码（不填默认 0）
     */
    private Number needGenerateEwmFlag;
    /**
     * 购方邮箱
     */
    private String notifyEmail;
    /**
     * 购方手机
     */
    private String notifyPhone;
    /**
     * 订单总价（精确到小数点后两位）
     */
    private Number orderTotal;
    /**
     * 收款人
     */
    private String payee;
    /**
     * 成品油标志（默认:0）: 0:非成品油; 1:成品油;
     */
    private String productOilFlag;
    /**
     * 项目名称，不填默认为”项目名称”，只能为数字、中文、英文和-、_
     */
    private String projectNameDisplay;
    /**
     * 备注信息
     */
    private String remark;
    /**
     * 销方银行开户行及帐号
     */
    private String salerAccount;
    /**
     * 销方地址
     */
    private String salerAddress;
    /**
     * 销方电话
     */
    private String salerTel;
    /**
     * 规格型号栏目显示，不填默认为”规格型号”，只能为数字、中文、英文和-、_
     */
    private String specNameDisplay;

    public String getBuyerName() {
        return buyerName;
    }

    public void setBuyerName(String buyerName) {
        this.buyerName = buyerName;
    }

    public String getClerk() {
        return clerk;
    }

    public void setClerk(String clerk) {
        this.clerk = clerk;
    }

    public List<InvoiceGoods> getDetail() {
        return detail;
    }

    public void setDetail(List<InvoiceGoods> detail) {
        this.detail = detail;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public String getSalerTaxNum() {
        return salerTaxNum;
    }

    public void setSalerTaxNum(String salerTaxNum) {
        this.salerTaxNum = salerTaxNum;
    }

    public String getAddDate() {
        return addDate;
    }

    public void setAddDate(String addDate) {
        this.addDate = addDate;
    }

    public String getBuyerAccount() {
        return buyerAccount;
    }

    public void setBuyerAccount(String buyerAccount) {
        this.buyerAccount = buyerAccount;
    }

    public String getBuyerAddress() {
        return buyerAddress;
    }

    public void setBuyerAddress(String buyerAddress) {
        this.buyerAddress = buyerAddress;
    }

    public String getBuyerTaxNum() {
        return buyerTaxNum;
    }

    public void setBuyerTaxNum(String buyerTaxNum) {
        this.buyerTaxNum = buyerTaxNum;
    }

    public String getBuyerTel() {
        return buyerTel;
    }

    public void setBuyerTel(String buyerTel) {
        this.buyerTel = buyerTel;
    }

    public String getChecker() {
        return checker;
    }

    public void setChecker(String checker) {
        this.checker = checker;
    }

    public String getClerkId() {
        return clerkId;
    }

    public void setClerkId(String clerkId) {
        this.clerkId = clerkId;
    }

    public String getCorpDisplayName() {
        return corpDisplayName;
    }

    public void setCorpDisplayName(String corpDisplayName) {
        this.corpDisplayName = corpDisplayName;
    }

    public String getDeptId() {
        return deptId;
    }

    public void setDeptId(String deptId) {
        this.deptId = deptId;
    }

    public String getInvoiceLine() {
        return invoiceLine;
    }

    public void setInvoiceLine(String invoiceLine) {
        this.invoiceLine = invoiceLine;
    }

    public Number getNeedGenerateEwmFlag() {
        return needGenerateEwmFlag;
    }

    public void setNeedGenerateEwmFlag(Number needGenerateEwmFlag) {
        this.needGenerateEwmFlag = needGenerateEwmFlag;
    }

    public String getNotifyEmail() {
        return notifyEmail;
    }

    public void setNotifyEmail(String notifyEmail) {
        this.notifyEmail = notifyEmail;
    }

    public String getNotifyPhone() {
        return notifyPhone;
    }

    public void setNotifyPhone(String notifyPhone) {
        this.notifyPhone = notifyPhone;
    }

    public Number getOrderTotal() {
        return orderTotal;
    }

    public void setOrderTotal(Number orderTotal) {
        this.orderTotal = orderTotal;
    }

    public String getPayee() {
        return payee;
    }

    public void setPayee(String payee) {
        this.payee = payee;
    }

    public String getProductOilFlag() {
        return productOilFlag;
    }

    public void setProductOilFlag(String productOilFlag) {
        this.productOilFlag = productOilFlag;
    }

    public String getProjectNameDisplay() {
        return projectNameDisplay;
    }

    public void setProjectNameDisplay(String projectNameDisplay) {
        this.projectNameDisplay = projectNameDisplay;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getSalerAccount() {
        return salerAccount;
    }

    public void setSalerAccount(String salerAccount) {
        this.salerAccount = salerAccount;
    }

    public String getSalerAddress() {
        return salerAddress;
    }

    public void setSalerAddress(String salerAddress) {
        this.salerAddress = salerAddress;
    }

    public String getSalerTel() {
        return salerTel;
    }

    public void setSalerTel(String salerTel) {
        this.salerTel = salerTel;
    }

    public String getSpecNameDisplay() {
        return specNameDisplay;
    }

    public void setSpecNameDisplay(String specNameDisplay) {
        this.specNameDisplay = specNameDisplay;
    }
}

